FrameLib  0.1
Arbitrarily timed and sized frame-based DSP
FrameLib_Parameters.h
Go to the documentation of this file.
1 
2 #ifndef FRAMELIB_PARAMETERS_H
3 #define FRAMELIB_PARAMETERS_H
4 
5 #include "FrameLib_Types.h"
6 #include "FrameLib_Memory.h"
7 #include <vector>
8 #include <cstring>
9 #include <cassert>
10 #include <limits>
11 #include <string>
12 
13 // FrameLib_Parameters
14 
15 // This class deals with parameters of an object
16 
17 static const char *typeStringsDouble[] = {"double", "enum", "string", "fixed length double array", "variable length double array" };
18 static const char *typeStringsInteger[] = {"int", "enum", "string", "fixed length int array", "variable length int array" };
19 static const char *typeStringsBool[] = {"bool", "enum", "string", "fixed length bool array", "variable length bool array" };
20 
22 {
23 
24 public:
25 
29 
30 public:
31 
32  // A Serialised Set Of Tagged Parameter Values (no memory ownership)
33 
34  class Serial
35  {
36 
37  public:
38 
39  // N.B. the assumption is that double is the largest type in use
40 
41  static const size_t alignment = sizeof(double);
42  static const size_t minGrowSize = 512;
43 
44  private:
45 
46  enum DataType { kDoubleArray, kString };
47 
48  public:
49 
50  // Constructors and Destructor
51 
52  Serial(BytePointer ptr, size_t size);
53  Serial();
54 
55  // Size Calculations
56 
57  static size_t calcSize(Serial *serialised) { return serialised != NULL ? serialised->mSize : 0; }
58  static size_t calcSize(const char *tag, const char *str) { return sizeType() + sizeString(tag) + sizeString(str); }
59  static size_t calcSize(const char *tag, size_t N) { return sizeType() + sizeString(tag) + sizeArray(N); }
60 
61  // Write Items
62 
63  void write(Serial *serialised);
64  void write(const char *tag, const char *str);
65  void write(const char *tag, const double *values, size_t N);
66 
67  // Read into Parameters
68 
69  void read(FrameLib_Parameters *parameters) const;
70 
71  // Utility
72 
73  size_t size() const { return mSize; }
74  void clear() { mSize = 0; }
75 
76  static size_t alignSize(size_t size) { return (size + (alignment - 1)) & ~(alignment - 1); }
77  static size_t inPlaceSize(size_t size) { return alignSize(sizeof(Serial)) + alignSize(size); }
78 
79  static Serial *newInPlace(void *ptr, size_t size) { return new (ptr) Serial(((BytePointer) ptr) + alignSize(sizeof(Serial)), size); }
80 
81  protected:
82 
83  // Check Size
84 
85  bool checkSize(size_t writeSize);
86 
87  private:
88 
89  // Deleted
90 
91  Serial(const Serial&);
92  Serial& operator=(const Serial&);
93 
94  // Debug
95 
96  void alignmentChecks() const;
97 
98  // Size Calculators
99 
100  static size_t sizeType() { return alignSize(sizeof(DataType)); }
101  static size_t sizeString(const char *str) { return alignSize(sizeof(size_t)) + alignSize(strlen(str) + 1); }
102  static size_t sizeArray(size_t N) { return alignSize(sizeof(size_t)) + alignSize((N * sizeof(double))); }
103 
104  // Write Item
105 
106  void writeType(DataType type);
107  void writeSize(size_t size);
108  void writeString(const char *str);
109  void writeDoubles(const double *ptr, size_t N);
110 
111  // Read Item
112 
113  DataType readType(BytePointer *readPtr) const;
114  void readSize(BytePointer *readPtr, size_t *size) const;
115  void readDoubles(BytePointer *readPtr, double **values, size_t *N) const;
116  void readString(BytePointer *readPtr, char **str) const;
117 
118  protected:
119 
120  // Member Variables
121 
123  size_t mSize;
124  size_t mMaxSize;
125  };
126 
127  // Extends Serial (with memory ownership)
128 
129  class AutoSerial : public Serial
130  {
131 
132  public:
133 
135  AutoSerial(size_t size) : Serial(new Byte[size], size) {}
136  ~AutoSerial() { if (mPtr) delete[] mPtr; }
137 
138  // Write Items
139 
140  void write(Serial *serialised) { if (checkSize(calcSize(serialised))) Serial::write(serialised); }
141  void write(const char *tag, char *str) { if (checkSize(calcSize(tag, str))) Serial::write(tag, str); }
142  void write(const char *tag, double *values, size_t N) { if (checkSize(calcSize(tag, N))) Serial::write(tag, values, N); }
143 
144  private:
145 
146  bool checkSize(size_t writeSize);
147  };
148 
149  // ************************************************************************************** //
150 
151  // Info Class for Passing in Info Strings
152 
153  class Info
154  {
155 
156  public:
157 
158  void add(const char *str) { mInfoStrings.push_back(str); }
159  void add(const std::string &str) { mInfoStrings.push_back(str); }
160  const char *get(unsigned long idx) { return (idx < mInfoStrings.size()) ? mInfoStrings[idx].c_str() : "No parameter info available"; }
161 
162  private:
163 
164  std::vector<std::string> mInfoStrings;
165  };
166 
167  // ************************************************************************************** //
168 
169 private:
170 
171  // Abstract Parameter Class
172 
173  class Parameter
174  {
175 
176  public:
177 
178  enum Flags { kFlagInstantiation = 0x1, kFlagBool = 0x2, kFlagInteger = 0x4, kFlagNonNumeric = 0x8 };
179 
180  // Constructor / Destructor
181 
182  Parameter(const char *name, long argumentIdx);
183  virtual ~Parameter() {};
184 
185  // Setters
186 
187  virtual void addEnumItem(const char *str);
188 
189  void setInstantiation() { mFlags |= kFlagInstantiation; }
190  void setBoolOnly() { mFlags |= kFlagBool | kFlagInteger; }
191  void setIntegerOnly() { mFlags |= kFlagInteger; }
192  void setNonNumeric() { mFlags |= kFlagNonNumeric; }
193 
194  void setMin(double min);
195  void setMax(double max);
196  void setClip(double min, double max);
197 
198  virtual void set(const char *str) {}
199  virtual void set(double value) {}
200  virtual void set(double *values, size_t N);
201 
202  virtual void clear() = 0;
203 
204  // Getters
205 
206  // Setup
207 
208  virtual Type type() = 0;
209 
210  const char *name() const { return mName.c_str(); }
211  long argumentIdx() const { return mArgumentIdx; }
212  int flags() const { return mFlags; }
213 
214  ClipMode getClipMode() const;
215  double getMin() const { return mMin; }
216  double getMax() { return mMax; }
217  void getRange(double *min, double *max) const;
218 
219  virtual const char *getItemString(unsigned long item) const;
220 
221  // Values
222 
223  double getDefault() const { return mDefault; }
224 
225  virtual double getValue() const { return 0; }
226  virtual const char *getString() const { return NULL; }
227  virtual size_t getArraySize() const { return 0; }
228  virtual size_t getArrayMaxSize() const { return 0; }
229  virtual const double *getArray() const { return NULL; }
230  const double *getArray(size_t *size) const;
231 
232  bool changed();
233 
234  protected:
235 
236  bool mChanged;
237  int mFlags;
238 
239  double mDefault;
240  double mMin;
241  double mMax;
242 
243  private:
244 
245  std::string mName;
246  long mArgumentIdx;
247  };
248 
249  // ************************************************************************************** //
250 
251  // Enum Parameter Class
252 
253  class Enum : public Parameter
254  {
255 
256  public:
257 
258  Enum(const char *name, long argumentIdx);
259 
260  // Setters
261 
262  void addEnumItem(const char *str);
263 
264  virtual void set(double value);
265  virtual void set(double *values, size_t N);
266  virtual void set(const char *str);
267 
268  virtual void clear() { Enum::set(0.0); };
269 
270  virtual Type type() { return kEnum; }
271 
272  // Getters
273 
274  virtual double getValue() const { return mValue; }
275  virtual const char *getString() const { return mItems[mValue].c_str(); }
276  virtual const char *getItemString(unsigned long item) const { return mItems[item].c_str(); }
277 
278  private:
279 
280  std::vector <std::string> mItems;
281  unsigned long mValue;
282  };
283 
284  // ************************************************************************************** //
285 
286  // Value Parameter Class
287 
288  class Value : public Parameter
289  {
290 
291  public:
292 
293  Value(const char *name, long argumentIdx, double defaultValue) : Parameter(name, argumentIdx), mValue(defaultValue)
294  { mDefault = defaultValue; }
295 
296  // Setters
297 
298  virtual void set(double value);
299  virtual void set(double *values, size_t N);
300 
301  virtual void clear() { Value::set(mDefault); };
302 
303  // Getters
304 
305  virtual Type type() { return kValue; }
306 
307  virtual double getValue() const { return mValue; }
308 
309  private:
310 
311  double mValue;
312  };
313 
314  // ************************************************************************************** //
315 
316  // String Parameter Class
317 
318  class String : public Parameter
319  {
320  const static size_t maxLen = 128;
321 
322  public:
323 
324  String(const char *name, long argumentIdx);
325 
326  // Setters
327 
328  virtual void set(const char *str);
329 
330  virtual void clear() { String::set(NULL); };
331 
332  // Getters
333 
334  virtual Type type() { return kString; }
335 
336  virtual const char *getString() const { return mCString; }
337 
338  private:
339 
340  char mCString[maxLen + 1];
341  };
342 
343  // ************************************************************************************** //
344 
345  // Array Parameter Class
346 
347  class Array : public Parameter, private std::vector<double>
348  {
349 
350  public:
351 
352  Array(const char *name, long argumentIdx, double defaultValue, size_t size);
353  Array(const char *name, long argumentIdx, double defaultValue, size_t maxSize, size_t size);
354 
355  // Setters
356 
357  virtual void set(double *values, size_t N);
358 
359  virtual void clear() { Array::set(NULL, 0); };
360 
361  // Getters
362 
363  virtual Type type() { return mVariableSize ? kVariableArray : kArray; }
364 
365  virtual size_t getArraySize() const { return mSize; }
366  virtual size_t getArrayMaxSize() const { return mItems.size(); }
367  virtual const double * getArray() const { return &mItems[0]; }
368 
369  private:
370 
371  std::vector<double> mItems;
372  size_t mSize;
373 
374  const bool mVariableSize;
375  };
376 
377  // ************************************************************************************** //
378 
379 public:
380 
381  // Constructor
382 
383  FrameLib_Parameters(Info *info) : mParameterInfo(info) {}
384 
385  // Destructor
386 
388  {
389  for (std::vector <Parameter *>::iterator it = mParameters.begin(); it != mParameters.end(); it++)
390  delete *it;
391  }
392 
393  // Size and Index
394 
395  unsigned long size() const { return mParameters.size(); }
396 
397  long getIdx(const char *name) const
398  {
399  for (unsigned long i = 0; i < mParameters.size(); i++)
400  if (strcmp(name, mParameters[i]->name()) == 0)
401  return i;
402 
403  long argumentIdx = convertToNumber(name);
404 
405  if (argumentIdx >= 0)
406  for (unsigned long i = 0; i < mParameters.size(); i++)
407  if (argumentIdx == mParameters[i]->argumentIdx())
408  return i;
409 
410  return -1;
411  }
412 
413  // Add Parameters
414 
415  void addBool(unsigned long index, const char *name, bool defaultValue = false, long argumentIdx = -1)
416  {
417  addParameter(index, new Value(name, argumentIdx, defaultValue));
418  mParameters.back()->setClip(false, true);
419  mParameters.back()->setBoolOnly();
420  }
421 
422  void addDouble(unsigned long index, const char *name, double defaultValue = 0.0, long argumentIdx = -1)
423  {
424  addParameter(index, new Value(name, argumentIdx, defaultValue));
425  }
426 
427  void addInt(unsigned long index, const char *name, long defaultValue = 0, long argumentIdx = -1)
428  {
429  addParameter(index, new Value(name, argumentIdx, defaultValue));
430  mParameters.back()->setIntegerOnly();
431  }
432 
433  void addString(unsigned long index, const char *name, long argumentIdx = -1)
434  {
435  addParameter(index, new String(name, argumentIdx));
436  }
437 
438  void addEnum(unsigned long index, const char *name, long argumentIdx = -1)
439  {
440  addParameter(index, new Enum(name, argumentIdx));
441  }
442 
443  void addEnumItem(unsigned long index, const char *str)
444  {
445  mParameters.back()->addEnumItem(str);
446  }
447 
448  void addBoolArray(unsigned long index, const char *name, long defaultValue, size_t size, long argumentIdx = -1)
449  {
450  addParameter(index, new Array(name, argumentIdx, defaultValue, size));
451  mParameters.back()->setBoolOnly();
452  }
453 
454  void addIntArray(unsigned long index, const char *name, long defaultValue, size_t size, long argumentIdx = -1)
455  {
456  addParameter(index, new Array(name, argumentIdx, defaultValue, size));
457  mParameters.back()->setIntegerOnly();
458  }
459 
460  void addDoubleArray(unsigned long index, const char *name, double defaultValue, size_t size, long argumentIdx = -1)
461  {
462  addParameter(index, new Array(name, argumentIdx, defaultValue, size));
463  }
464 
465  void addVariableBoolArray(unsigned long index, const char *name, long defaultValue, size_t maxSize, size_t size, long argumentIdx = -1)
466  {
467  addParameter(index, new Array(name, argumentIdx, defaultValue, maxSize, size));
468  mParameters.back()->setBoolOnly();
469  }
470 
471  void addVariableIntArray(unsigned long index, const char *name, long defaultValue, size_t maxSize, size_t size, long argumentIdx = -1)
472  {
473  addParameter(index, new Array(name, argumentIdx, defaultValue, maxSize, size));
474  mParameters.back()->setIntegerOnly();
475  }
476 
477  void addVariableDoubleArray(unsigned long index, const char *name, double defaultValue, size_t maxSize, size_t size, long argumentIdx = -1)
478  {
479  addParameter(index, new Array(name, argumentIdx, defaultValue, maxSize, size));
480  }
481 
482  // Setters (N.B. - setters have sanity checks as the tags are set by the end-user)
483 
484  // Set as Instantiation Only
485 
486  void setInstantiation() { mParameters.back()->setInstantiation(); }
487 
488  // Set Range
489 
490  void setMin(double min) { mParameters.back()->setMin(min); }
491  void setMax(double max) { mParameters.back()->setMax(max); }
492  void setClip(double min, double max) { mParameters.back()->setClip(min, max); }
493 
494  // Set Value
495 
496  void set(Serial *serialised) { if (serialised) serialised->read(this); }
497 
498  void set(unsigned long idx, bool value) { set(idx, (double) value); }
499  void set(const char *name, bool value) { set(name, (double) value); }
500 
501  void set(unsigned long idx, long value) { set(idx, (double) value); }
502  void set(const char *name, long value) { set(name, (double) value); }
503 
504  void set(unsigned long idx, double value) { if (idx < size()) mParameters[idx]->set(value); }
505  void set(const char *name, double value) { set(getIdx(name), value); }
506 
507  void set(unsigned long idx, char *str) { if (idx < size()) mParameters[idx]->set(str); }
508  void set(const char *name, char *str) { set(getIdx(name), str); }
509 
510  void set(unsigned long idx, double *values, size_t N) { if (idx < size()) mParameters[idx]->set(values, N); }
511  void set(const char *name, double *values, size_t N) { set(getIdx(name), values, N); }
512 
513  void clear(unsigned long idx) { if (idx < size()) mParameters[idx]->clear(); }
514  void clear(const char *name) { clear(getIdx(name)); }
515 
516  // Getters (N.B. - getters have no sanity checks, because they are the programmer's responsibility)
517 
518  // Get Name
519 
520  std::string getName(unsigned long idx) const { return mParameters[idx]->name(); }
521 
522  long getArgumentIdx(unsigned long idx) const { return mParameters[idx]->argumentIdx(); }
523  long getArgumentIdx(const char *name) const { return mParameters[getIdx(name)]->argumentIdx(); }
524 
525  // Get Type
526 
527  Type getType(unsigned long idx) const { return mParameters[idx]->type(); }
528  Type getType(const char *name) const { return getType(getIdx(name)); }
529 
530  NumericType getNumericType(unsigned long idx) const;
531  NumericType getNumericType(const char *name) const { return getNumericType(getIdx(name)); }
532 
533  // N.B. the type string includes details of numeric type / instantion only
534 
535  std::string getTypeString(unsigned long idx) const;
536  std::string getTypeString(const char *name) const { return getTypeString(getIdx(name)); }
537 
538  // Get Range
539 
540  ClipMode getClipMode(unsigned long idx) const { return mParameters[idx]->getClipMode(); }
541  ClipMode getClipMode(const char *name) const { return getClipMode(getIdx(name)); }
542 
543  double getMin(unsigned long idx) const { return mParameters[idx]->getMin(); }
544  double getMin(const char *name) const { return getMin(getIdx(name)); }
545 
546  double getMax(unsigned long idx) const { return mParameters[idx]->getMax(); }
547  double getMax(const char *name) const { return getMax(getIdx(name)); }
548 
549  void getRange(unsigned long idx, double *min, double *max) const { return mParameters[idx]->getRange(min, max); }
550  void getRange(const char *name, double *min, double *max) const { return getRange(getIdx(name), min, max); }
551 
552  // Get Item Strings
553 
554  std::string getItemString(unsigned long idx, unsigned long item) const { return mParameters[idx]->getItemString(item); }
555  std::string getItemString(const char *name, unsigned long item) const { return getItemString(getIdx(name), item); }
556 
557  // Get Info
558 
559  std::string getInfo(unsigned long idx) const { return mParameterInfo ? mParameterInfo->get(idx) : "No parameter info available"; }
560  std::string getInfo(const char *name) const { return getInfo(getIdx(name)); }
561 
562  // Default Values
563 
564  double getDefault(unsigned long idx) const { return mParameters[idx]->getDefault(); }
565  double getDefault(const char *name) const { return getDefault(getIdx(name)); }
566 
567  std::string getDefaultString(unsigned long idx) const;
568  std::string getDefaultString(const char *name) const { return getDefaultString(getIdx(name)); }
569 
570  // Get Value
571 
572  double getValue(unsigned long idx) const { return mParameters[idx]->getValue(); }
573  double getValue(const char *name) const { return getValue(getIdx(name)); }
574 
575  long getInt(unsigned long idx) const { return (long) getValue(idx); }
576  long getInt(const char *name) const { return getInt(getIdx(name)); }
577 
578  long getBool(unsigned long idx) const { return (bool) getValue(idx); }
579  bool getBool(const char *name) const { return (bool) getValue(getIdx(name)); }
580 
581  const char *getString(unsigned long idx) const { return mParameters[idx]->getString(); }
582  const char *getString(const char *name) const { return getString(getIdx(name)); }
583 
584  const double *getArray(unsigned long idx) const { return mParameters[idx]->getArray(); }
585  const double *getArray(const char *name) const { return getArray(getIdx(name)); }
586  const double *getArray(unsigned long idx, size_t *size) const { return mParameters[idx]->getArray(size); }
587  const double *getArray(const char *name, size_t *size) const { return getArray(getIdx(name), size); }
588 
589  size_t getArraySize(unsigned long idx) const { return mParameters[idx]->getArraySize(); }
590  size_t getArraySize(const char *name) const { return getArraySize(getIdx(name)); }
591 
592  size_t getArrayMaxSize(unsigned long idx) const { return mParameters[idx]->getArrayMaxSize(); }
593  size_t getArrayMaxSize(const char *name) const { return getArrayMaxSize(getIdx(name)); }
594 
595  bool changed(unsigned long idx) { return mParameters[idx]->changed(); }
596  bool changed(const char *name) { return changed(getIdx(name)); }
597 
598 private:
599 
600  // Deleted
601 
603  FrameLib_Parameters& operator=(const FrameLib_Parameters&);
604 
605  // Utility
606 
607  void addParameter(unsigned long index, Parameter *attr)
608  {
609  assert((index == mParameters.size()) && "parameters must be added in order");
610  mParameters.push_back(attr);
611  }
612 
613  static long convertToNumber(const char *name)
614  {
615  long result = 0;
616 
617  for (unsigned long i = 0; ; i++)
618  {
619  long current = name[i];
620 
621  if (current == 0 && i)
622  return result;
623 
624  if (current < '0' || current > '9')
625  return -1;
626 
627  result = (result * 10) + (current - '0');
628  }
629  }
630 
631  // Data
632 
633  std::vector <Parameter *> mParameters;
634  Info *mParameterInfo;
635 };
636 
637 #endif
AutoSerial(size_t size)
Definition: FrameLib_Parameters.h:135
size_t getArraySize(unsigned long idx) const
Definition: FrameLib_Parameters.h:589
void addEnumItem(unsigned long index, const char *str)
Definition: FrameLib_Parameters.h:443
~AutoSerial()
Definition: FrameLib_Parameters.h:136
void add(const char *str)
Definition: FrameLib_Parameters.h:158
long getBool(unsigned long idx) const
Definition: FrameLib_Parameters.h:578
Definition: FrameLib_Parameters.h:27
void addDouble(unsigned long index, const char *name, double defaultValue=0.0, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:422
double getValue(const char *name) const
Definition: FrameLib_Parameters.h:573
Definition: FrameLib_Parameters.h:21
NumericType getNumericType(const char *name) const
Definition: FrameLib_Parameters.h:531
void add(const std::string &str)
Definition: FrameLib_Parameters.h:159
static size_t inPlaceSize(size_t size)
Definition: FrameLib_Parameters.h:77
static Serial * newInPlace(void *ptr, size_t size)
Definition: FrameLib_Parameters.h:79
Serial()
Definition: FrameLib_Parameters.cpp:11
void setClip(double min, double max)
Definition: FrameLib_Parameters.h:492
void getRange(const char *name, double *min, double *max) const
Definition: FrameLib_Parameters.h:550
std::string getName(unsigned long idx) const
Definition: FrameLib_Parameters.h:520
void getRange(unsigned long idx, double *min, double *max) const
Definition: FrameLib_Parameters.h:549
const double * getArray(unsigned long idx, size_t *size) const
Definition: FrameLib_Parameters.h:586
Definition: FrameLib_Parameters.h:34
double getMin(unsigned long idx) const
Definition: FrameLib_Parameters.h:543
std::string getItemString(const char *name, unsigned long item) const
Definition: FrameLib_Parameters.h:555
void addVariableIntArray(unsigned long index, const char *name, long defaultValue, size_t maxSize, size_t size, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:471
FrameLib_Parameters(Info *info)
Definition: FrameLib_Parameters.h:383
ClipMode getClipMode(unsigned long idx) const
Definition: FrameLib_Parameters.h:540
Definition: FrameLib_Parameters.h:27
void write(const char *tag, double *values, size_t N)
Definition: FrameLib_Parameters.h:142
void setMax(double max)
Definition: FrameLib_Parameters.h:491
double getDefault(const char *name) const
Definition: FrameLib_Parameters.h:565
double getMin(const char *name) const
Definition: FrameLib_Parameters.h:544
static size_t calcSize(Serial *serialised)
Definition: FrameLib_Parameters.h:57
void addBool(unsigned long index, const char *name, bool defaultValue=false, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:415
void clear(unsigned long idx)
Definition: FrameLib_Parameters.h:513
size_t mSize
Definition: FrameLib_Parameters.h:123
Definition: FrameLib_Parameters.h:27
Type getType(unsigned long idx) const
Definition: FrameLib_Parameters.h:527
std::string getInfo(unsigned long idx) const
Definition: FrameLib_Parameters.h:559
void addVariableBoolArray(unsigned long index, const char *name, long defaultValue, size_t maxSize, size_t size, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:465
Definition: FrameLib_Parameters.h:28
unsigned char * BytePointer
Definition: FrameLib_Types.h:16
size_t size() const
Definition: FrameLib_Parameters.h:73
std::string getInfo(const char *name) const
Definition: FrameLib_Parameters.h:560
void addVariableDoubleArray(unsigned long index, const char *name, double defaultValue, size_t maxSize, size_t size, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:477
size_t mMaxSize
Definition: FrameLib_Parameters.h:124
size_t getArraySize(const char *name) const
Definition: FrameLib_Parameters.h:590
Definition: FrameLib_Parameters.h:28
NumericType
Definition: FrameLib_Parameters.h:26
static const size_t alignment
Definition: FrameLib_Parameters.h:41
void addIntArray(unsigned long index, const char *name, long defaultValue, size_t size, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:454
~FrameLib_Parameters()
Definition: FrameLib_Parameters.h:387
bool changed(const char *name)
Definition: FrameLib_Parameters.h:596
long getArgumentIdx(unsigned long idx) const
Definition: FrameLib_Parameters.h:522
Definition: FrameLib_Parameters.h:27
Definition: FrameLib_Parameters.h:28
void write(const char *tag, char *str)
Definition: FrameLib_Parameters.h:141
Definition: FrameLib_Parameters.h:27
void write(Serial *serialised)
Definition: FrameLib_Parameters.cpp:18
const char * getString(unsigned long idx) const
Definition: FrameLib_Parameters.h:581
unsigned char Byte
Definition: FrameLib_Types.h:15
double getValue(unsigned long idx) const
Definition: FrameLib_Parameters.h:572
void setMin(double min)
Definition: FrameLib_Parameters.h:490
BytePointer mPtr
Definition: FrameLib_Parameters.h:122
long getInt(unsigned long idx) const
Definition: FrameLib_Parameters.h:575
Definition: FrameLib_Parameters.h:26
NumericType getNumericType(unsigned long idx) const
Definition: FrameLib_Parameters.cpp:436
void clear(const char *name)
Definition: FrameLib_Parameters.h:514
unsigned long size() const
Definition: FrameLib_Parameters.h:395
double getMax(const char *name) const
Definition: FrameLib_Parameters.h:547
Definition: FrameLib_Parameters.h:153
const double * getArray(unsigned long idx) const
Definition: FrameLib_Parameters.h:584
std::string getTypeString(unsigned long idx) const
Definition: FrameLib_Parameters.cpp:447
std::string getItemString(unsigned long idx, unsigned long item) const
Definition: FrameLib_Parameters.h:554
ClipMode
Definition: FrameLib_Parameters.h:28
AutoSerial()
Definition: FrameLib_Parameters.h:134
long getArgumentIdx(const char *name) const
Definition: FrameLib_Parameters.h:523
ClipMode getClipMode(const char *name) const
Definition: FrameLib_Parameters.h:541
size_t getArrayMaxSize(unsigned long idx) const
Definition: FrameLib_Parameters.h:592
void setInstantiation()
Definition: FrameLib_Parameters.h:486
long getIdx(const char *name) const
Definition: FrameLib_Parameters.h:397
Type
Definition: FrameLib_Parameters.h:27
Definition: FrameLib_Parameters.h:26
bool getBool(const char *name) const
Definition: FrameLib_Parameters.h:579
const double * getArray(const char *name, size_t *size) const
Definition: FrameLib_Parameters.h:587
long getInt(const char *name) const
Definition: FrameLib_Parameters.h:576
void read(FrameLib_Parameters *parameters) const
Definition: FrameLib_Parameters.cpp:49
static size_t alignSize(size_t size)
Definition: FrameLib_Parameters.h:76
bool checkSize(size_t writeSize)
Definition: FrameLib_Parameters.cpp:150
double getDefault(unsigned long idx) const
Definition: FrameLib_Parameters.h:564
Type getType(const char *name) const
Definition: FrameLib_Parameters.h:528
const double * getArray(const char *name) const
Definition: FrameLib_Parameters.h:585
static size_t calcSize(const char *tag, const char *str)
Definition: FrameLib_Parameters.h:58
Definition: FrameLib_Parameters.h:129
size_t getArrayMaxSize(const char *name) const
Definition: FrameLib_Parameters.h:593
void write(Serial *serialised)
Definition: FrameLib_Parameters.h:140
std::string getDefaultString(const char *name) const
Definition: FrameLib_Parameters.h:568
void addBoolArray(unsigned long index, const char *name, long defaultValue, size_t size, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:448
Definition: FrameLib_Parameters.h:28
void addInt(unsigned long index, const char *name, long defaultValue=0, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:427
std::string getTypeString(const char *name) const
Definition: FrameLib_Parameters.h:536
Definition: FrameLib_Parameters.h:26
bool changed(unsigned long idx)
Definition: FrameLib_Parameters.h:595
void addEnum(unsigned long index, const char *name, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:438
static const size_t minGrowSize
Definition: FrameLib_Parameters.h:42
const char * getString(const char *name) const
Definition: FrameLib_Parameters.h:582
void addString(unsigned long index, const char *name, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:433
static size_t calcSize(const char *tag, size_t N)
Definition: FrameLib_Parameters.h:59
std::string getDefaultString(unsigned long idx) const
Definition: FrameLib_Parameters.cpp:466
void clear()
Definition: FrameLib_Parameters.h:74
void addDoubleArray(unsigned long index, const char *name, double defaultValue, size_t size, long argumentIdx=-1)
Definition: FrameLib_Parameters.h:460
Definition: FrameLib_Parameters.h:26
double getMax(unsigned long idx) const
Definition: FrameLib_Parameters.h:546